/**
 *
 * @author Kenneth
 * Bean que implementa las interfaces Remote y Local para el modulo de autenticacion
 */

package autenticacion.capalogica;

import capadatos.ModuloAutenticacionCapaDatos;
import sistemaamd.ServiceResult;
import sistemaamd.Usuario;

import java.util.ArrayList;
import javax.ejb.Stateless;

@Stateless
public class ModuloAutenticacionBean implements ModuloAutenticacionRemote, ModuloAutenticacionLocal {
    //Instancia del modulo de clientes de capa 3
    ModuloAutenticacionCapaDatos moduloAutenticacionCapaDatos;

    //Consulta para autenticar usuario de la BD
    @Override
    public ServiceResult autenticarUsuario(String correo, String clave) {
        ServiceResult resultado;
        //se crea una instancia de la clase de capa 3
        this.moduloAutenticacionCapaDatos = new ModuloAutenticacionCapaDatos();

        //si hubo error en la creación de la instancia de capa 3
        if(this.moduloAutenticacionCapaDatos.getExisteError())
            //retorna con el mensaje de error
            return new ServiceResult(this.moduloAutenticacionCapaDatos.getMensajeError());

        //se consultan los clientes en capa 3
        resultado = this.moduloAutenticacionCapaDatos.autenticarUsuario(correo, clave);
        
        //si no hubo errores
        if(!resultado.getExisteError().booleanValue()) {
            //se crea una lista de objetos Cliente
            ArrayList<Usuario> lista = new ArrayList<Usuario>();
            //se obtiene el valor del resultado de capa 3
            ArrayList valorResultado = resultado.getValorResultado();
            //se obtiene la cantidad de registros que fueron consultados
            Usuario usuario = (Usuario)valorResultado.get(0);
            lista.add(usuario);

            //se crea una nueva variable de resultado
            resultado = new ServiceResult();
            //y se establece el valor como la lista de Clientes
            resultado.setValorResultado(lista);
        }

        return resultado;
    }
    /**
     * Método de negocio que consulta la lista de clientes del sistema
     * @return ServiceResult con el resultado de la operación
     */
    @Override
    public ServiceResult validarUsuario(String correo, String clave) {
        ServiceResult resultado;
        //se crea una instancia de la clase de capa 3
        this.moduloAutenticacionCapaDatos = new ModuloAutenticacionCapaDatos();

        //si hubo error en la creación de la instancia de capa 3
        if(this.moduloAutenticacionCapaDatos.getExisteError())
            //retorna con el mensaje de error
            return new ServiceResult(this.moduloAutenticacionCapaDatos.getMensajeError());

        //se consultan los clientes en capa 3
        resultado = this.moduloAutenticacionCapaDatos.validarUsuario(correo, clave);

        //si no hubo errores
        if(!resultado.getExisteError().booleanValue()) {
            //se crea una lista de objetos Cliente
            ArrayList<String> lista = new ArrayList<String>();
            //se obtiene el valor del resultado de capa 3
            ArrayList valorResultado = resultado.getValorResultado();
            //se obtiene la cantidad de registros que fueron consultados
            String nombre = valorResultado.get(0).toString();
            lista.add(nombre);

            //se crea una nueva variable de resultado
            resultado = new ServiceResult();
            //y se establece el valor como la lista de Clientes
            resultado.setValorResultado(lista);
        }

        return resultado;
    }
    
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method" or "Web Service > Add Operation")
 
}
